<?php

class Core_Validate_Endereco extends Zend_Validate_Abstract
{
	const ENDERECO = 'endereco';
	const UF       = 'uf';
	const CIDADE   = 'cidade';
	const BAIRRO   = 'bairro';
	const CEP      = 'cep';
	const TELEFONE = 'telefone';

	protected $_messageTemplates = array(
		self::ENDERECO => 'Endereço inválido',
		self::UF       => 'UF inválida',
		self::CIDADE   => 'Cidade inválida',
		self::BAIRRO   => 'Bairro inválido',
		self::CEP      => 'CEP inválido',
		self::TELEFONE => 'Telefone inválido'
	);

	public function isValid($data)
	{
		$valid = true;
		
		if ('' == $data->ds_logradouro) {
			$this->_error(self::ENDERECO);
			$valid = false;
		}
		
		if (!$data->id_uf || !is_numeric(trim($data->id_uf))) {
			$this->_error(self::UF);
			$valid = false;
		}
		
		if (!$data->id_cidade || !is_numeric($data->id_cidade)) {
			$this->_error(self::CIDADE);
			$valid = false;
		}
		
		if ('' == $data->ds_bairro) {
			$this->_error(self::BAIRRO);
			$valid = false;
		}
		
		if (8 != strlen($data->nu_cep) || !is_numeric($data->nu_cep)) {
			$this->_error(self::CEP);
			$valid = false;
		}
		
		if ((strlen($data->nu_telefone_residencial) < 8 || strlen($data->nu_telefone_residencial) > 10) || !is_numeric($data->nu_telefone_residencial)) {
			$this->_error(self::TELEFONE );
			$valid = false;
		}

		return $valid;
	}
}
